var fs = require('fs');
const express = require ('express');
const App = express();

var bodyParser = require('body-parser');    //首先要引入这个插件
const appPort = 8080;


var AipImageClassifyClient = require("baidu-aip-sdk").imageClassify;

//设置appid/ak/sk(获取access_token)
var APP_ID = "23806342";
var API_KEY = "TiRgPkg3PEg6QvUdGv4645Dp";
var SECRET_KEY= "BV31NrFyYkcvhGmPnAgaFYQNn6rwYjDL";

// 新建一个对象，建议只保存一个对象调用服务接口
var client = new AipImageClassifyClient(APP_ID, API_KEY, SECRET_KEY);
// var image = fs.readFileSync("assets/example.jpg").toString("base64");

//设置跨域访问
App.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

//解析json
App.use(bodyParser.urlencoded({  //配置这两行代码
    extended: true
}));
App.use(bodyParser.json({limit: '1mb'}));//配置这两行代码

App.listen(appPort,()=>{
    console.log('----------程序启动----------');
    console.log(`端口：${appPort}`);
})

//向服务请求检测图像中的主体位置。
App.post('/getImgPosition',(req,res)=>{
    // 调用图像主体检测
	const returnDdata = {
        success: false,
        data: {},
        errorMsg: '',
    }
    // 调用图像主体检测
    if (req.body.base64Image !== '' || req.body.base64Image) {
        // req.body.base64Image
        client.objectDetect(req.body.base64Image).then(function (result) {
            if (result.error_code === 216200) {
                returnDdata.errorMsg = '图片不能为空';
            } else if (result.error_code === 216201) {
                returnDdata.errorMsg = '图片格式错误';
            } else if (result.error_code === 216202) {
                returnDdata.errorMsg = '上传的图片大小错误，大小小于4M';
            } else if(JSON.stringify(result.result) === "{}" || result.result === null || result.result === undefined) {
                //百度抛出的其他错误
                returnDdata.errorMsg = JSON.stringify(result)//直接扔给前端，，不然前端要报错
                //在这之前，，success始终是false，，所以，不需要在里面修改
                //---------------------------------------
            }else{
                //成功
                returnDdata.success = true;
                returnDdata.data = result.result;
            }
            //统一返回数据
            return res.json(returnDdata)

            //this end ##...

        }).catch(function (err) {
            // 如果发生网络错误
            res.status(500);//设置服务器状态码(500代表服务器错误)
            if(err.constructor === Object){
                console.log(JSON.stringify(err));//打印错误信息     错误信息不要返回给前端
            }else{
                console.log("错误", err)
            }
            returnDdata.errorMsg = '服务器错误，请稍后再试';
            return res.json(returnDdata);//扔给前端处理

            //this end ##...
        });
    } else {
        res.status(500);
        returnDdata.errorMsg = '图片参数有误，请检查';
        return res.json(returnDdata);//

        //this end ##...
    }

})